Completion requirements
Задание:
- Необходимо использовать отечественные алгоритмы шифрования
- Сертификаты выдаются на 30 дней
- Обеспечьте доверие сертификату для HQ-CLI
- Выдайте сертификаты веб серверам
- Перенастройте ранее настроенный реверсивный прокси nginx на протокол https
- При обращении к веб серверам https://web.au-team.irpo и https://docker.au-team.irpo у браузера клиента не должно возникать предупреждений.
Вариант реализации:
HQ-SRV:
- Установите пакет с поддержкой ГОСТ:
apt-get install -y openssl-gost-engine
- Включите поддержку ГОСТ через control-скрипт:
control openssl-gost enabled
- Создаём закрытый ключ с алгоритмом ГОСТ-2012 (ca.key):
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:TCB -out ca.key
- Создаём сертификат на 30 дней (ca.cer):
openssl req -new -x509 -md_gost12_256 -days 30 -key ca.key -out ca.cer
-
- Результат:

- Проверка сертификата (ca.cer):
.png)
- Создаём закрытые ключи по алгоритму ГОСТ веб-серверов:
- для web.au-team.irpo:
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out web.au-team.irpo.key
-
- для docker.au-team.irpo:
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out docker.au-team.irpo.key
- Создаём запросы на подпись ранее созданном УЦ:
-
- для web.au-team.irpo:
openssl req -new -md_gost12_256 -key gost.example.com.key -out web.au-team.irpo.csr
.png)
-
- для docker.au-team.irpo:
openssl req -new -md_gost12_256 -key gost.example.com.key -out docker.au-team.irpo.csr
.png)
- Подписываем запрос в ранее созданном УЦ:
-
- для web.au-team.irpo:
openssl x509 -req -in web.au-team.irpo.csr -CA ca.cer -CAkey ca.key -CAcreateserial -out web.au-team.irpo.cer -days 30
-
- для docker.au-team.irpo:
openssl x509 -req -in docker.au-team.irpo.csr -CA ca.cer -CAkey ca.key -CAcreateserial -out docker.au-team.irpo.cer -days 30
- Результат:
.png)
ISP:
- Разрешаем доступ по ssh для пользователя root, чтобы можно было передать необходимые файлы с HQ-SRV:
vim /etc/openssh/sshd_config
-
- приводим PermitRootLogin к следующему виду:
.png)
- Перезагружаем службу sshd для применения изменений:
systemctl restart sshd
HQ-SRV:
- Передаём необходимые файлы на ISP:
scp web.au-team.irpo.key root@172.16.1.1:~/
scp web.au-team.irpo.cer root@172.16.1.1:~/
scp docker.au-team.irpo.key root@172.16.1.1:~/
scp docker.au-team.irpo.cer root@172.16.1.1:~/
ISP:
- Проверить наличие файлов ключей и сертификатов:
.png)
- Создаём каталог /etc/nginx/ssl и копируем туда файлы ключей и сертификатов:
mkdir /etc/nginx/ssl
cp web.au-team.irpo.* /etc/nginx/ssl
cp docker.au-team.irpo.* /etc/nginx/ssl
-
Перенастраиваем доступ по https для доступа к сайту web.au-team.irpo и docker.au-team.irpo в конфигурационном файле /etc/nginx/sites-available.d/default.conf:
vim /etc/nginx/sites-available.d/default.conf
.png)
- Проверить наличие ошибок в конфигурационных файлах:
nginx -t
-
- Результат:
.png)
- Чтобы устранить подобную ошибку и чтобы nginx в результате успешно перезапустил свою службу, необходимо установить пакет с поддержкой ГОСТ:
apt-get install -y openssl-gost-engine
- Включите поддержку ГОСТ через control-скрипт:
control openssl-gost enabled
- Перепроверить наличие ошибок в конфигурационных файлах:
.png)
- Перезапустить службу nginx:
systemctl restart nginx
HQ-SRV:
- Передаём на HQ-CLI корневой сертификат УЦ (ca.cer):
scp ca.cer user@192.168.200.2:~/
HQ-CLI:
- Проверить наличие переданного сертификата:
.png)
-
Для установки корневых сертификатов необходимо поместить файлы сертификатов в /etc/pki/ca-trust/source/anchors/ и обновить общесистемный список доверенных CA (из-под суперпользователя root):
cp /home/user/ca.cer /etc/pki/ca-trust/source/anchors/ && update-ca-trust
- Проверить наличие сертификата в браузере:
- Яндекс:
.png)
-
- Chromiun:
.png)
- При попытке подключиться к нашим веб-ресурсам будет возникать следующая ошибка:
- Chromium:
.png)
-
- Яндекс:
.png)
- Решение: устанавливаем КриптоПро CSP:
.png)
.png)
.png)
- Распаковать скаченный архив:
.png)
- Из-под суперпользователя перейти в дирректорию с распакованным архивом:
cd /home/user/Загрузки/linux-amd64
- Установите пакет cryptopro-preinstall:
apt-get install -y cryptopro-preinstall
- Запустить скрипт установки:
./install_gui.sh
.png)
.png)
.png)
.png)
.png)
.png)
- Можно запустить КриптоПРО SCP и проверить наличие нашего УЦ:
.png)
- После чего проверить доступ до веб-ресурсов:
.png)
.png)
.png)
.png)
.png)
НО (проблемы в исходном коде приложения):
Описанное ниже - не является призывом к действию! Просто попытка дойти до истины (редактирование запущенного контейнера - никчему хорошему не приведёт!)
- для подключения https://docker.au-team.irpo - возникают проблемы со стилями (именно при подключению по HTTPS):
.png)
-
- если перейти в режим отладки (F12), то можно увидеть что файл стилей не может быть загружен (проблема на стороне исходного кода веб-приложения):
.png)
- можем попытаться войти внутрь контейнера с нашим приложением на BR-SRV:
docker exec -it testapp ash
.png)
- проблема кроется в файле app/site/site.html, а именно в строке:
.png)
-
- если данную строку привести к следующему виду:
.png)
- проблема с отсутствием стилей при доступе по HTTPS будет решена:
.png)
.png)
Last modified: Wednesday, 29 October 2025, 4:05 PM